﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;
using System.Data;
using System.Web.UI.WebControls;
using CLab.Common.Constantes;

namespace CLab.Utils.Extensions
{
    public static class ListBoxExtension
    {
        public static void ObtenEstudios(this GandA.Web.UI.Controls.ListBox listBox, int? idLaboratorio, string estudiosExcluir = "")
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            //Parametros
            parametros.Add(CreaParametroConsulta(Parametros.pnIdLaboratorio, idLaboratorio, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta(Parametros.psExcluirEstudios, estudiosExcluir, ConsultaServiceReference.Parameter.vEnumType.VarChar));
            ConsultaServiceReference.Parameter[] parameters = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(parameters);
            //Ejecuta conulta
            DataTable dt = servicio.EjecutaConsultaConParametros("spObtenListaEstudios", parameters).Tables[0];

            listBox.DataTextField = Columnas.NombreEstudio;
            listBox.DataValueField = Columnas.IdEstudio;
            listBox.DataSource = dt;
            listBox.DataBind();
        }

        public static void ObtenEstudiosPaq(this GandA.Web.UI.Controls.ListBox listBox, int? idLaboratorio, int idPaquete)
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            //Parametros
            parametros.Add(CreaParametroConsulta(Parametros.pnIdLaboratorio, idLaboratorio, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta(Parametros.pnIPaquete, idPaquete, ConsultaServiceReference.Parameter.vEnumType.Int));
            ConsultaServiceReference.Parameter[] parameters = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(parameters);
            //Ejecuta conulta
            DataTable dt = servicio.EjecutaConsultaConParametros("spObtenComboEstudiosPaq", parameters).Tables[0];

            listBox.DataTextField = Columnas.NombreEstudio;
            listBox.DataValueField = Columnas.IdEstudio;
            listBox.DataSource = dt;
            listBox.DataBind();
        }

        public static string ConvertToXml(this GandA.Web.UI.Controls.ListBox listBox)
        {
            string xml = string.Empty;
            foreach (ListItem item in listBox.ControlListBox.Items)
            {
                xml = xml + "<Item><Value>" + item.Value + "</Value></Item>";
            }

            if (!string.IsNullOrEmpty(xml))
                xml = "<Items>" + xml + "</Items>";

            return xml;
        }

        public static string ConvertToString(this GandA.Web.UI.Controls.ListBox listBox)
        {
            string str = string.Empty;
            bool first = true;
            foreach (ListItem item in listBox.ControlListBox.Items)
            {
                if (first)
                {
                    str = str + item.Value;
                    first = false;
                }
                else
                    str = str + "," + item.Value;
            }

            return str;
        }

        public static ConsultaServiceReference.Parameter CreaParametroConsulta(string _nombreParametro, object _valor, ConsultaServiceReference.Parameter.vEnumType _type)
        {
            ConsultaServiceReference.Parameter p = new ConsultaServiceReference.Parameter();
            p.nombreParametro = _nombreParametro;
            p.valor = _valor;
            p.type = _type;

            return p;
        }
    }
}